1. Background and Relevant Art
Computer systems and related technology affect many aspects of society Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, and database management) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. As a result, the performance of many computing tasks are distributed across a number of different computer systems and/or a number of different computing components.
Data for computer systems it typically stored on and accessed from disks, such as, for example, magnetic disks, optical disks, etc. A software component such as a volume stack receives I/O commands from upper layer modules (e.g., applications) and interfaces with a physical component (e.g., a magnetic platter) to implement the I/O commands. Typically disks suffer from at least two problems: disk fill and disk failure.
A disk fills when its available storage space is filled with data. When a disk becomes full, there is typically no way to seamlessly add new a disk drive to expand available storage space. Some operating systems have attempted to address this issue. At least one operating system allows multiple disks to be bound together into a “volume set”. However, a drive containing the operating system can not be included in the volume set. Thus, for a user with an operating system and document directory stored in the same disk, there may be no way to create a volume set when adding a second disk dive.
Further once a volume set is created, the disks in the volume set can never be removed, even if one of them is beginning to fail, or if a user wishes to replace an old smaller disk and a new larger and faster disk. Additionally, if one disk in a volume set fails, other disks in the volume set typically become inaccessible.
Failure of a disk drive can result in data becoming inaccessible. Some types of disks, such as, for example, magnetic hard disks, include moving mechanical parts. Thus, these types of disks are more likely to suffer from failure, relative to other computer system components such as processors and system memory. Failure of a hard drive can result in the loss of years of data that is potentially hard to replace.
Some techniques to reduce the chances of losing data due to disk failure have been developed. For example, software mirroring “mirrors” the complete contents of one drive to another drive. However, these techniques have several limitations. For example, due to significant system level interactions, it may be difficult, if not impossible, to create a mirror set for a volume that includes an operating system. Further, mirror sets typically can not include external drives and require that two disks be of the same size. Additionally, mirroring has at least some needless overhead since every sector, even unused sectors and sectors for unimportant temporary files, must be copied to both disks.